﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Working.Domínio.Produtos
{
    public class Produto: Entidade
    {
        #region Construtores

        public Produto(ItemID id, string nome, decimal preço)
        {
            this.ItemID = id;
            this.Nome = nome;
            this.Preço = preço;
        }

        public Produto(string id, string nome, decimal preço)
            : this(new ItemID(id), nome, preço)
        { }

        public Produto(): this(new ItemID(string.Empty), string.Empty, 0m)
        { }

        #endregion


        #region Propriedades

        public ItemID ItemID
        {
            get { return itemID; }
            set 
            {
                if (value.ToString() == null)
                    throw new WorkingException(ProdutosResources.SIdentificadorNãoPodeSerNulo);

                itemID = value; 
            }
        } private ItemID itemID;

        public string Nome
        {
            get { return nome; }
            set { nome = value; }
        } private string nome;
        
        public Decimal Preço
        {
            get { return preço; }
            set 
            {
                if (value < 0)
                    throw new PreçoInválidoException(value,
                        string.Format(ProdutosResources.SPreçoInválido, this.Nome));
                    
                preço = value; 
            }
        } private Decimal preço;

        #endregion

        public override string ToString()
        {
            return this.Nome.ToString();
        }
    }
}
